package com.mobile.service.inter.system;

import java.util.List;
import java.util.Map;

import com.mobile.service.dto.FunctionDTO;
import com.mobile.service.dto.FunctionQueryDTO;
import com.mobile.util.PageData;
import com.mobile.util.PageResult;

/**
 * 功能菜单管理Service接口
 * @author Administrator
 *
 * @version 0.1 2021-01-15 初版
 *
 */
public interface FunctionService {

	/**获取角色对应功能权限数据
	 * @param pd  参数
	 */
	public List<PageData> getRoleFunctionAuthData(PageData pd)throws Exception;

	/**
	 * 获取所有菜单并填充每个菜单的子菜单列表(系统菜单列表)(递归处理)(有效值筛选)
	 * @param functionId
	 * @return
	 * @throws Exception
	 */

	public List<PageData> listAllMenuQx(String functionId) throws Exception;
	/**
	 * 获取所有菜单并填充每个菜单的子菜单列表(系统菜单列表)(递归处理)
	 * @param functionId
	 * @return
	 * @throws Exception
	 */
	List<PageData> listAllMenu(String functionId) throws Exception;

	/**
	 * 通过ID获取其子一级菜单
	 * @param parentId
	 * @return
	 * @throws Exception
	 */
	public List<PageData> listSubMenuByParentId(String parentId) throws Exception;

	/**根据用户账号获取全部功能权限数据
	 * @param pd  参数
	 * @return
	 * @throws Exception
	 */
	public List<String> getAuthDataByUserCode(PageData pd) throws Exception;

	/**获取用户账号获取全功能的权限对应关系数据
	 * @param pd  参数
	 * @return
	 * @throws Exception
	 */
	public List<PageData> getFunctionAuthData(PageData pd) throws Exception;

	/**
	 * 菜单列表(分页)
	 */
	public PageResult<FunctionDTO> getMenuList(FunctionQueryDTO functionQueryDTO) throws Exception;

	/**
	 * 新增功能菜单
	 * @param pageData
	 * @return
	 * @throws Exception
	 */
	public Map<String, Object> insertFunction(PageData pageData) throws Exception;

	/**
	 * 修改菜单
	 * @param pageData
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> updateFunction(PageData pageData) throws Exception;

	/**
	 * 修改菜单是否有效
	 * @param pageData
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> editEffective(PageData pageData) throws Exception;

	/**
	 * 通过id查询菜单
	 * @param functionId
	 * @return
	 * @throws Exception
	 */
	PageData findFunctionById(String functionId)throws Exception;

	/**
	 * 删除菜单
	 * @param pd
	 * @return
	 * @throws Exception
	 */
	Map<String, Object> removeFunc(PageData pd) throws Exception;
}
